package com.rxt;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;

import java.util.ArrayList;
import java.util.List;

public class Generator {
    public static void main(String[] args) {
        AutoGenerator autoGenerator = new AutoGenerator();

        //设置数据源
        DataSourceConfig dataSource = new DataSourceConfig();
        dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://82.157.143.242:3306/rongxiaotong?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
//        dataSource.setUrl("jdbc:mysql://localhost:3306/lzm?serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        autoGenerator.setDataSource(dataSource);

        //设置全局配置
        GlobalConfig globalConfig = new GlobalConfig();
//        globalConfig.setOutputDir(System.getProperty("user.dir")+"/springboot_03_generater/src/main/java");
//        globalConfig.setOpen(false);    //设置生成完毕是否打开生成代码的目录
        globalConfig.setAuthor("周梓文");      //设置作者
        globalConfig.setFileOverride(true);     //设置是否覆盖原生文件
        globalConfig.setMapperName("%sMapper");     //设置数据层接口,%s为占位符,指代模块名称
        globalConfig.setIdType((IdType.AUTO));     //设置ID生成策略
        autoGenerator.setGlobalConfig(globalConfig);

        //设置报名相关配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.aaa");     //设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
        packageConfig.setEntity("domain");      //设置实体类包名
        packageConfig.setMapper("mapper");     //设置数据层包名
        autoGenerator.setPackageInfo(packageConfig);

        //策略设置
        StrategyConfig strategyConfig = new StrategyConfig();
//        strategyConfig.setInclude("user");      //设置参与生成的表名,参与为可变参数
        strategyConfig.setTablePrefix("");      //设置数据库表前的前缀名,模块名 = 数据库表名 - 前缀名 例如 User = tbl_user - tbl_
        strategyConfig.setRestControllerStyle(true);       //设置是否启用rest风格
        strategyConfig.setVersionFieldName("");      //设置乐观锁字段
        strategyConfig.setLogicDeleteFieldName("delete_status");      //设置逻辑删除字段名
        strategyConfig.setEntityLombokModel(true);     //设置是否启用lombok
        autoGenerator.setStrategy(strategyConfig);


        List tableFillList = new ArrayList<>();

        tableFillList.add(new TableFill("create_time", FieldFill.INSERT));

        tableFillList.add(new TableFill("update_time", FieldFill.UPDATE));

        strategyConfig.setTableFillList(tableFillList);

        //生成
        autoGenerator.execute();
    }
}
